import tkinter
from tkinter.filedialog import askopenfilenames

from service import MusicService

class PlayerWindow:
    def __init__(self):
        top = tkinter.Tk()
        #增加按钮
        btn1 = tkinter.Button(top,text='播放')
        btn2 = tkinter.Button(top,text='导入音乐')
        btn3 = tkinter.Button(top,text='删除')

        #设置按钮位置
        btn1.grid(row=0,column=0,padx=5,pady=5)
        btn2.grid(row=0,column=1,padx=5,pady=5)
        btn3.grid(row=0,column=2,padx=5,pady=5)
        #增加播放列表
        self.listbox = tkinter.Listbox(top)
        self.listbox.grid(row=1,column=0,columnspan=3,padx=5,pady=5)

        #获取播放列表
        self.load_music()

        #设置btn的事件处理函数
        btn2.bind('<ButtonRelese-1>',self.import_music)
        btn1.bind('<ButtonRelese-1>',self.play_music)
        btn3.bind('<ButtonRelese-1>',self.delete_music)


        #进入消息循环
        top.mainloop()

    def import_music(self,event):
        print('导入音乐')
        filenames = askopenfilenames(filetypes=[('mp3','*.mp3'),('flac','*.flac')])
        #调用服务对象添加音乐
        ms.add_music(filenames)
        #刷新播放列表
        self.load_music()

    def load_music(self):
        m_list = ms.find_user_music()
        self.listbox.delete(0,tkinter.END)
        for m in m_list:
            self.listbox.insert(0, m[0])

    def play_music(self,event):
        #获取当前列表中选中的对象
        index = self.listbox.curselection()
        #根据索引获取音乐名称
        music_name = self.listbox.get(index)
        #将音乐名称传递给服务对象
        ms.play_music(music_name)

    def delete_music(self,event):
        #获取当前列表中选中的对象
        index = self.listbox.curselection()
        #根据索引获取音乐名称
        music_name = self.listbox.get(index)
        #调用服务对象删除音乐
        ms.delete_music(music_name)
        #刷新播放列表
        self.load_music()

if __name__ == '__main__':
    uname = input('请输入用户名：')
    passwd = input('请输入密码：')
    #创建服务对象
    ms = MusicService()
    #调用登录方法
    if ms.login(uname,passwd):
        pw = PlayerWindow()
    else:
        print('登录失败')